/**
 * Formats a date object, timestamp, or date string into a specified format.
 * @param {Date|number|string} date - The date to format.
 * @param {string} fmt - The desired format string, e.g., 'yyyy-MM-dd hh:mm:ss'.
 * @returns {string} The formatted date string.
 */
export function formatDateTime(date, fmt = 'yyyy-MM-dd hh:mm:ss') {
    if (!date) return '-';

    const d = new Date(date);
    if (isNaN(d.getTime())) {
        return '-';
    }

    const o = {
        'M+': d.getMonth() + 1, // 月份
        'd+': d.getDate(), // 日
        'h+': d.getHours(), // 小时
        'm+': d.getMinutes(), // 分
        's+': d.getSeconds(), // 秒
        'q+': Math.floor((d.getMonth() + 3) / 3), // 季度
        S: d.getMilliseconds(), // 毫秒
    };

    if (/(y+)/.test(fmt)) {
        fmt = fmt.replace(RegExp.$1, (d.getFullYear() + '').substr(4 - RegExp.$1.length));
    }

    for (let k in o) {
        if (new RegExp('(' + k + ')').test(fmt)) {
            fmt = fmt.replace(
                RegExp.$1,
                RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)
            );
        }
    }
    return fmt;
}